/**
 * 
 */
package br.com.skynix.tcmc.controller.seguranca.usuarios;

import javax.annotation.Resource;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

import org.springframework.stereotype.Controller;

import br.com.skynix.tcmc.base.excecao.MensagensSistema;
import br.com.skynix.tcmc.base.managedbeans.AbstractCRUDManagedBean;
import br.com.skynix.tcmc.base.spring.IServiceAuditavel;
import br.com.skynix.tcmc.model.rh.Funcionario;
import br.com.skynix.tcmc.model.seguranca.Usuario;
import br.com.skynix.tcmc.service.rh.funcionarios.FuncionarioService;
import br.com.skynix.tcmc.service.seguranca.usuarios.UsuarioService;

/**
 * @author mgrb
 * 
 */
@ManagedBean
@RequestScoped
@Controller
public class UsuarioMB extends AbstractCRUDManagedBean<Usuario> {
	@Resource
	private UsuarioService usuarioService;

	@Resource
	private FuncionarioService funcionarioService;

	private String cpf;

	public UsuarioMB() {
		setModeloPesquisa(new Usuario());
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.com.skynix.tcmc.base.AbstractCRUDManagedBean#getService()
	 */
	@Override
	protected IServiceAuditavel<Usuario> getService() {
		return usuarioService;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.com.skynix.tcmc.base.managedbeans.AbstractCRUDManagedBean#
	 * getPathParaModuloCRUD()
	 */
	@Override
	protected String getPathParaModuloCRUD() {
		return formatPath("seguranca/usuarios/usuario_crud_view");
	}

	/**
	 * @return the cpf
	 */
	public String getCpf() {
		return cpf;
	}

	/**
	 * @param cpf the cpf to set
	 */
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public void burcarFuncionario() {
		Funcionario func = funcionarioService.buscarPeloCPF(cpf);
		getModeloEdicao().setFuncionario(func);
		if (func == null) {
			adcionarMensagem(FacesMessage.SEVERITY_WARN,
					MensagensSistema.AVISO_GERAL_CONSULTA_SEM_RESULTADO);
		}
		else {
			getModeloEdicao().setUsername(func.getEmail());
			cpf = null;
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.com.skynix.tcmc.base.managedbeans.AbstractCRUDManagedBean#irParaInclusao
	 * ()
	 */
	@Override
	public void irParaInclusao() {
		super.irParaInclusao();
		cpf = null;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.com.skynix.tcmc.base.managedbeans.AbstractCRUDManagedBean#
	 * carregarModeloEdicao(br.com.skynix.tcmc.base.model.EntidadeAuditavel)
	 */
	@Override
	protected Usuario carregarModeloEdicao(Usuario t) {
		return usuarioService.buscarUsuarioComFuncionario(t.getId());
	}
}
